/*
 *	Copyright 2011 andro-inject developers 
 *	Licensed under the Apache License, Version 2.0 (the "License"); 
 *	you may not use this file except in compliance with the License. 
 *	You may obtain a copy of the License at
 *
 * 	http://www.apache.org/licenses/LICENSE-2.0
 * 
 *	Unless required by applicable law or agreed to in writing, software 
 *	distributed under the License is distributed on an "AS IS" BASIS,
 *	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *	See the License for the specific language governing permissions and
 *	limitations under the License. 
 * 
*/

package com.androinject.core.logging;

import com.androinject.core.logging.console.ConsoleLoggerFactory;

public class Logging {
	
	public static final int LEVEL_TRACE		= 1;
	public static final int LEVEL_DEBUG		= 2;
	public static final int LEVEL_INFO		= 3;
	public static final int LEVEL_WARN		= 4;
	public static final int LEVEL_ERROR		= 5;
	public static final int LEVEL_FATAL		= 6;
	
	
	private static LoggerFactory loggerFactory;
	private static boolean isInitialized = false;
	
	
	public static void initialize(LoggerFactory loggerFactory, int logLevel) {
		Logging.loggerFactory = loggerFactory;
		Logging.loggerFactory.initialize(logLevel);
		Logging.isInitialized = true;
	}
	

	public static Logger getLogger(Class<?> clazz) {
		return getLoggerFactory().getLogger(clazz);
	}
	
	
	private static LoggerFactory getLoggerFactory() {
		if (isInitialized) {
			return loggerFactory;
		}
		initialize(new ConsoleLoggerFactory(), LEVEL_WARN);
		return loggerFactory;
	}
	
}
